/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.contact.services;

import java.util.Map;

import fr.generali.accueilclient.client.om.IAdresse;
import fr.generali.accueilclient.client.om.IContact;
import fr.generali.accueilclient.client.om.IContratsAdresse;
import fr.generali.accueilclient.client.om.IIdentifiantContact;
import fr.generali.accueilclient.commun.exception.AccueilClientBusinessException;

/**
 * Service pour tout ce qui concerne les données client contact
 * 
 * @author selrhazala
 */
public interface IContactService {

    /**
     * @param contact le contact
     *@return map identifiant contact
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    Map<IIdentifiantContact.TypeContact, IIdentifiantContact> gererContact(IContact contact) throws AccueilClientBusinessException;
    
    /**
     * @param contact le contact Pro
     * @return map identifiant contact
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    Map<IIdentifiantContact.TypeContact, IIdentifiantContact> gererContactPro(IContact contact) throws AccueilClientBusinessException;
    
    /**
     * @param contact le contact
     * @return adresseRetour l'adresse retournée par le ws
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    IAdresse creerAdresse(IContact contact) throws AccueilClientBusinessException;
    
    /**
     * @param contratsAdresse les contrats à propager avec l'adresse concernée
     * @return String
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    String propagerAdresse(IContratsAdresse contratsAdresse) throws AccueilClientBusinessException;
    
    /**
     * @param contact le contact
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    void desactiverContact(IContact contact) throws AccueilClientBusinessException;
    
    /**
     * modifie les stops communication du client
     * 
     * @param contact le contact
     * @return map identifiant contact
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    Map<IIdentifiantContact.TypeContact, IIdentifiantContact> modifierStopsCommunication(IContact contact) throws AccueilClientBusinessException;

}
